/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86184
 * Date: 2023-02-01
 * Time: 13:29
 */
public class This_reference {
    public int year;  //年
    public int month;// 月
    public int day;  //日

    public void setDate(int y,int m,int d){
        year=y;
        month=m;
        day=d;
    }

    public void setDateThis(int year,int month,int day){
        year=year;
        month=month;
        day=day;
    }

    /*
    1. this的类型：对应类类型引用，即哪个对象调用就是哪个对象的引用类型
    2. this只能在"成员方法"中使用
    3. 在"成员方法"中，this只能引用当前对象，不能再引用其他对象
    4. this是“成员方法”第一个隐藏的参数，编译器会自动传递，在成员方法执行时，编译器会负责将调用成员方法
       对象的引用传递给该成员方法，this负责来接收
    */
    public void setDateThis1(int year,int month,int day){
        this.year=year;
        this.month=month;
        this.day=day;
    }

    public void printDate(){
        System.out.println(year+"-"+month+"-"+day);
    }

    public static void main(String[] args) {
        This_reference date=new This_reference();
        This_reference date1=new This_reference();
        This_reference date3=new This_reference();
        date.setDate(2023,2,1);
        date.printDate();
        System.out.println("----局部变量优先------");
        date1.setDateThis(2023,2,1);
        date1.printDate();
        System.out.println("-----加this--->this引用指向当前对象，而不优先使用局部变量-----");
        date3.setDateThis1(2023,2,1);
        date3.printDate();
    }
}
